﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace TargetControl
{
    /// <summary>
    /// Bia bắn
    /// </summary>
    public class Target
    {
        public string imgPath;
        private Image imgTarget;
        //Các vòng tròn tính điểm
        private ScoreCircles objScoreCircles;
        //Tâm bia tính theo centimet
        private int x;
        private int y;
        //Kish thước bia tính theo centimet
        private int width;
        private int height;

        public Target(string imagePath)
        {
            objScoreCircles = new ScoreCircles();
            imgPath = imagePath;
            imgTarget = Image.FromFile(imgPath);
        }

        public ScoreCircles ScoreCircles
        {
            get
            {
                return objScoreCircles;
            }
            set
            {
                objScoreCircles = value;
            }
        }

        public int X
        {
            get
            {
                return x;
            }
            set
            {
                x = value;
            }
        }

        public int Y
        {
            get
            {
                return y;
            }
            set
            {
                y = value;
            }
        }

        public int Width
        {
            get
            {
                return width;
            }
            set
            {
                width = value;
            }
        }

        public int Height
        {
            get
            {
                return height;
            }
            set
            {
                height = value;
            }
        }

        /// <summary>
        /// Kiểm tra xem điểm bắn có vào mục tiêu không?
        /// </summary>
        /// <returns></returns>
        public bool InTarget(PointF p)
        {
            bool result = false;
            //Kiểm tra đơn giản là vào rectangle
            if (Math.Abs(p.X) <= Width && Math.Abs(p.Y) <= Height)
                result = true;

            return result;
        }


        /// <summary>
        /// Kiểm tra xem điểm bắn có vào mục tiêu không?
        /// </summary>
        /// <returns></returns>
        public bool InTarget(Point p)
        {
            bool result = false;
            //Kiểm tra bằng bitmap
            Bitmap img = new Bitmap(imgPath);
            Color pixelColor = img.GetPixel(p.X, p.Y);
            if (pixelColor.Name != "ffffffff")
            {
                result = true;
            }

            return result;
        }

        public void Draw(Graphics g, Projection pr)
        {
            //Tính kích thước Target theo pixel
            int height = pr.FromCentimetToPixelDistance(Height);
            int width = pr.FromCentimetToPixelDistance(Width);
            //Tính tọa độ vẽ Target theo pixel (topleft)
            Point p = pr.FromCentiToPixel(new PointF(X, Y));
            int x = p.X - width / 2;
            int y = p.Y - height / 2;
            //Draw image
            
            //Thực hiện vẽ và tô màu bia
            Rectangle rect = new Rectangle(x, y, width, height);
            g.DrawImage(imgTarget, rect);
            //Pen pen = new Pen(Color.Red);
            //g.FillRectangle(Brushes.Gray, rect);
            //pen.Dispose();
        }

    }
}
